home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr25 / sio102.zip / SIOUSER.TXT < prev    next >
Text File  |  1993-06-15  |  42KB  |  969 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.                                      USERS MANUAL
  26.  
  27.               SIO.SYS and VSIO.SYS, Serial Communications Device Driver
  28.                for OS/2 V2 (and up) and its Virtual DOS Machines (VDM).
  29.  
  30.                         Copyright (c) 1993 by Raymond L. Gwinn
  31.                                  12469 Cavalier Drive
  32.                               Woodbridge, Virginia 22192
  33.                                  All Rights Reserved
  34.  
  35.                                     June 15, 1993
  36.  
  37.                                         Email
  38.                                  CompuServe 72570,157
  39.                           Internet 72570.157@compuserve.com
  40.                          FidoNet 1:265/104 (Routed Mail Only)
  41.  
  42.                                          FAX
  43.                                      703-494-0595
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.                                                                           i
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.                                      INTRODUCTION
  60.  
  61.           SIO.SYS and VSIO.SYS are  companion device drivers for Version  2
  62.           (and up) of the OS/2 operating system.
  63.  
  64.           Both drivers (SIO/VSIO) have been coded with performance in mind,
  65.           possibly sacrificing  some compatibility.   For this  reason, SIO
  66.           and VSIO are not exact replacements for the  OS/2 drivers COM and
  67.           VCOM.  However, all serial  communications programs tested by the
  68.           author work correctly using SIO/VSIO.
  69.  
  70.           This manual is intended for the SIO user.  A separate Application
  71.           Programmers manual is being written.
  72.  
  73.           This manual and the software distributed with it is provided with
  74.           no guarantees.  Use it at your own risk.
  75.  
  76.           Product Support
  77.  
  78.           Extensive testing has been done to insure that this product works
  79.           on the  widest possible range  of OS/2 V2  (and up) systems.   In
  80.           most  cases, problems  can  be resolved  by  reading this  manual
  81.           carefully.
  82.  
  83.           Email and  FAX are the  only methods of support  provided.  Voice
  84.           support would overwhelm the author.  If, after reading the manual
  85.           carefully, you are unable  to resolve a problem, please  fill out
  86.           PROBLEM.TXT (adding information as necessary) and Email/FAX it to
  87.           one of the following addresses:
  88.  
  89.                                         Email
  90.                                  CompuServe 72570,157
  91.                           Internet 72570.157@compuserve.com
  92.                          FidoNet 1:265/104 (Routed Mail Only)
  93.  
  94.                                          FAX
  95.                                      703-494-0595
  96.  
  97.           PROBLEM.TXT is included in the distribution ZIP.
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.                                                                          ii
  106.  
  107.                                   TABLE OF CONTENTS
  108.  
  109.  
  110.           INTRODUCTION  . . . . . . . . . . . . . . . . . . . . . . . .   i
  111.                Product Support  . . . . . . . . . . . . . . . . . . . .   i
  112.  
  113.           WHAT IS SIO . . . . . . . . . . . . . . . . . . . . . . . . .   1
  114.  
  115.           WHAT IS VSIO  . . . . . . . . . . . . . . . . . . . . . . . .   2
  116.  
  117.           GETTING STARTED . . . . . . . . . . . . . . . . . . . . . . .   3
  118.  
  119.           Installing SIO/VSIO . . . . . . . . . . . . . . . . . . . . .   3
  120.                Quick Start  . . . . . . . . . . . . . . . . . . . . . .   3
  121.  
  122.           COMMAND LINE OPTIONS  . . . . . . . . . . . . . . . . . . . .   4
  123.                COM1 thru COMn . . . . . . . . . . . . . . . . . . . . .   4
  124.                I/O port address . . . . . . . . . . . . . . . . . . . .   4
  125.                IRQ number . . . . . . . . . . . . . . . . . . . . . . .   4
  126.                Forced 16550A  . . . . . . . . . . . . . . . . . . . . .   4
  127.  
  128.           AUTOMATIC IRQ ASSIGNMENT  . . . . . . . . . . . . . . . . . .   5
  129.  
  130.           DOS SETTINGS  . . . . . . . . . . . . . . . . . . . . . . . .   6
  131.                SIO_Allow_Access_COMn  . . . . . . . . . . . . . . . . .   6
  132.                SIO_Virtualize_COM_Ports . . . . . . . . . . . . . . . .   6
  133.                SIO_Virtualize_16550A  . . . . . . . . . . . . . . . . .   6
  134.                SIO_Virtual_RTS_is_HS  . . . . . . . . . . . . . . . . .   6
  135.  
  136.           Differences between SIO/VSIO and COM/VCOM . . . . . . . . . .   7
  137.  
  138.           PROBLEMS AND SOLUTIONS  . . . . . . . . . . . . . . . . . . .   8
  139.                IRQ for a port appears to be wrong . . . . . . . . . . .   8
  140.                The modem will not initialize  . . . . . . . . . . . . .   8
  141.                WinFax locks up during install . . . . . . . . . . . . .   8
  142.                WinFax does not work well  . . . . . . . . . . . . . . .   8
  143.                Telemate does not recognize VX00 as a FOSSIL . . . . . .   8
  144.                Output is very slow at 2400 baud and below . . . . . . .   8
  145.                FaxWorks' driver FMD.SYS . . . . . . . . . . . . . . . .   9
  146.  
  147.           IRQ SHARING ON ISA  . . . . . . . . . . . . . . . . . . . .    10
  148.  
  149.           Appendix A, Hardware Port and IRQ Assignments . . . . . . .    11
  150.                Addresses and IRQs for COM1 and COM2 . . . . . . . . .    11
  151.                Defacto standard for COM3 and COM4 . . . . . . . . . .    11
  152.                Addresses and IRQ for COM3 through COM8 on the PS/2  .    11
  153.  
  154.           Appendix B, SIO Chips . . . . . . . . . . . . . . . . . . .    12
  155.                8250 . . . . . . . . . . . . . . . . . . . . . . . . .    12
  156.                8250A  . . . . . . . . . . . . . . . . . . . . . . . .    12
  157.                16450  . . . . . . . . . . . . . . . . . . . . . . . .    13
  158.                16C451 . . . . . . . . . . . . . . . . . . . . . . . .    13
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.                                                                         iii
  167.  
  168.                16550 (Non A . . . . . . . . . . . . . . . . . . . . .    13
  169.                16550A . . . . . . . . . . . . . . . . . . . . . . . .    13
  170.                16550AF  . . . . . . . . . . . . . . . . . . . . . . .    13
  171.                16550AFN . . . . . . . . . . . . . . . . . . . . . . .    13
  172.                16550s Made by Western Digital . . . . . . . . . . . .    14
  173.                16C551 . . . . . . . . . . . . . . . . . . . . . . . .    14
  174.                16C552 . . . . . . . . . . . . . . . . . . . . . . . .    14
  175.                16C554 . . . . . . . . . . . . . . . . . . . . . . . .    14
  176.                82510  . . . . . . . . . . . . . . . . . . . . . . . .    14
  177.  
  178.           Appendix C, Multi-Port Serial I/0 Cards . . . . . . . . . .    15
  179.                STB 4COM . . . . . . . . . . . . . . . . . . . . . . .    15
  180.  
  181.           INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . .    16
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.                                                                           1
  190.  
  191.                                      WHAT IS SIO
  192.  
  193.           SIO is  a Serial Input/Output  (SIO) communications  driver.   It
  194.           provides an interface between application programs and the serial
  195.           communications hardware.
  196.  
  197.           SIO had been designed  as a high performance replacement  for the
  198.           OS/2  device driver  COM.SYS.    SIO.SYS  does not  support  some
  199.           features  that are  provided  by COM.SYS.    In the  view of  the
  200.           author,  these features  are rarely  used and  they inhibit  good
  201.           performance on the vast majority of systems.  See the programmers
  202.           reference manual  for  information about  the  known  differences
  203.           between COM.SYS and SIO.SYS.
  204.  
  205.           SIO only works with 8250 (TYPE) serial I/O devices.  Such devices
  206.           include  the 8250A, 16450, 16550,  16550A and the  82510.  If you
  207.           have a PC  that is an IBM  or near compatible which has  a serial
  208.           communication  port, it is likely  that it contains  one of these
  209.           devices.  SIO  will identify the type  of serial devices that  it
  210.           finds at load time.
  211.  
  212.           Like other  Device  Drivers, SIO  will  do very  little  standing
  213.           alone.  There must be an application(s) program to use SIO before
  214.           you will gain benefit.
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.                                                                           2
  223.  
  224.                                      WHAT IS VSIO
  225.  
  226.           VSIO  is a Virtual Device  Driver (VDD).   Virtual device drivers
  227.           provide services  for DOS  programs executing under  OS/2.   Most
  228.           Virtual Device Drivers emulate  a specific hardware device and/or
  229.           BIOS service.   The primary job of a Virtual  Device Driver is to
  230.           convert   misbehaved   DOS   input/output   into   well   behaved
  231.           input/output.
  232.  
  233.           Using the protection mechanism  of the 386 (and up)  processor, a
  234.           Virtual Device Driver can instruct OS/2  to trap all input/output
  235.           for  given hardware  ports.   Once  trapped,  the Virtual  Device
  236.           Driver   (VDD)  appropriately  routes   information  to/from  the
  237.           Physical Device Driver (PDD) and to/from the DOS program.
  238.  
  239.           VSIO creates  a  virtual (imaginary)  16550A or  16450 (UART)  in
  240.           software.   VSIO does not emulate any  BIOS services.  All of the
  241.           hardware  registers of  the virtual  UART are simulated  by VSIO.
  242.           VSIO does not attempt  to simulate the timing of the  real UARTs.
  243.           DOS programs that depend on the timing of real hardware UARTs may
  244.           have problems executing under VSIO.
  245.  
  246.           All  DOS programs  that execute  under VSIO  should  have RTS/CTS
  247.           handshaking  enabled regardless of the baud rate.  Note that this
  248.           enabling  of RTS/CTS  handshaking is  independent of  the RTS/CTS
  249.           handshaking used by SIO.
  250.  
  251.           The virtualization (simulation) provided by  VSIO is not (and can
  252.           not  be) exact.  However,  most well written  DOS programs should
  253.           not have problems.
  254.  
  255.           VSIO  will only  work  with SIO  installed  and the  versions  of
  256.           SIO/VSIO must match.  If VSIO refuses to install, you most likely
  257.           have  a version  mismatch.   VSIO will  not work  with  any other
  258.           device driver like COM.SYS.
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                                           3
  267.  
  268.                                    GETTING STARTED
  269.  
  270.           Installing SIO/VSIO
  271.  
  272.           SIO  is distributed  as a  ZIP file.   To extract  the individual
  273.           files  from the distribution file you need the program PKUNZIP or
  274.           an  equivalent.   PKUNZIP  is  a product  of  PKWARE  and can  be
  275.           downloaded from  almost any  bulletin  board system  (BBS).   You
  276.           probably already have PKUNZIP and know how to use it, otherwise I
  277.           doubt that  you would be reading  this.  When PKUNZIP  is used to
  278.           extract the various files, -AV should appear after each file name
  279.           as it is extracted.  In addition, the message:
  280.  
  281.                Authentic files Verified!
  282.  
  283.           should appear after the extraction process.  If this message does
  284.           not appear, or appears with a  name other than Raymond L.  Gwinn,
  285.           the file is not an original SIO distribution file.
  286.  
  287.           The  only file  that the  basic user  actually needs  is SIO.SYS.
  288.           Virtual  DOS machine (VDM) users  will also want  VSIO.SYS.  Copy
  289.           one  or  both  of  these  files  to  a  convenient  directory  or
  290.           subdirectory on your system.
  291.  
  292.           Quick Start
  293.  
  294.           Copy  SIO.SYS and  VSIO.SYS to  the root  directory of  your boot
  295.           drive or diskette.
  296.  
  297.           If you  are going to  use standard  communications ports,  either
  298.           COM1 or COM2 on an  ISA buss (AT or clone), or  COM1 through COM4
  299.           on a PS/2, then add the following line to your CONFIG.SYS file:
  300.  
  301.                DEVICE=SIO.SYS
  302.                DEVICE=VSIO.SYS
  303.  
  304.           Be sure to REMark out the COM.SYS and VCOM.SYS device  drivers if
  305.           they exist in your CONFIG.SYS.
  306.  
  307.           With the above  statements you will be able to  use standard COM1
  308.           and/or COM2 (if they exist) on any PC system know to the author.
  309.  
  310.           If your setup is more complex, you must read on.
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.                                                                           4
  319.  
  320.                                  COMMAND LINE OPTIONS
  321.  
  322.           The  command line options are  included in the  command line that
  323.           loads SIO  in the  CONFIG.SYS  file.   VSIO has  no command  line
  324.           options.  Command line options are usually grouped by port within
  325.           parenthesis.
  326.  
  327.           If you  use only COM1 and/or  COM2, at the standard  IRQ and port
  328.           addresses,  you will not need any command line options.  However,
  329.           up  to four serial communications  ports, COM1 thru  COM4, can be
  330.           specified at any base port address and any IRQ.   On PS/2 systems
  331.           and some  ISA  cards, SIO/VSIO  supports multiple  communications
  332.           devices sharing the same IRQ.
  333.  
  334.           The basic command line syntax is as follows:
  335.  
  336.                DEVICE=SIO.SYS (Cn, An, In, Ig, Fc) [(Cn, An, In, Ig, Fc)]
  337.  
  338.           Where
  339.                "Cn"  is the comm port number (1  thru 4) or the string COM1
  340.                thru COMn.
  341.  
  342.                "An" is a  hexadecimal number that defines the base hardware
  343.                I/O port address for the communications port.
  344.  
  345.                "In" is  an IRQ number (0  thru 15) or the  string IRQ0 thru
  346.                IRQ15.  Is  is best if one allows SIO  to determine the IRQ,
  347.                see AUTOMATIC IRQ ASSIGNMENT below.
  348.  
  349.                "Ig"  is an ignored parameter.   If exists for compatibility
  350.                with COM.SYS.
  351.  
  352.                "Fc" is the Forced 16550A chip parameter.  If an F is placed
  353.                in  this  position,  a  16550A  UART  chip  type  is  forced
  354.                regardless of the automatically detected chip type.
  355.  
  356.           For  a PC  with  COM1 and  COM2  of standard  configuration,  the
  357.           following command line will load SIO correctly:
  358.  
  359.                DEVICE=SIO.SYS (1, 3F8, 4) (2, 2f8, 3)
  360.  
  361.           A more readable, but identical, command line is:
  362.  
  363.                DEVICE=SIO.SYS (COM1,3F8,IRQ4) (COM2,2F8,IRQ3)
  364.  
  365.           Forcing a 16550A on COM1 would be as follows:
  366.  
  367.                DEVICE=SIO.SYS (COM1,3F8,IRQ4,,F) (COM2,2F8,IRQ3)
  368.  
  369.           In a similar manner,  up to four serial communications  ports can
  370.           be defined and supported by SIO and VSIO.
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.                                                                           5
  379.  
  380.  
  381.                                AUTOMATIC IRQ ASSIGNMENT
  382.  
  383.           SIO  will  automatically  locate the  IRQ  that  a  comm port  is
  384.           attached  to.   The  IRQ used  by SIO  for a  given comm  port is
  385.           assigned in the following manner:
  386.  
  387.           1 - If an IRQ is specified  in the SIO command line then that IRQ
  388.           is used.  However, SIO will  display a warning message if the IRQ
  389.           seems to be other than specified.
  390.  
  391.           2 -  If no  IRQ is  specified in  the command  line,  and if  SIO
  392.           detected the IRQ then the detected IRQ is used.
  393.  
  394.           3 - If no  IRQ is specified in the command, and  if SIO could NOT
  395.           detect  an IRQ then  the default IRQ  for the comm  port is used.
  396.           SIO will also display a warning message in this case.
  397.  
  398.           The following STYLE command  line is recommended for all  but the
  399.           most unusual systems.  That is, specify only the  port number for
  400.           those above COM2 (to tell SIO to support those ports) and let SIO
  401.           do the rest.
  402.  
  403.           DEVICE=SIO.SYS (COM3) (COM4)
  404.  
  405.           If you do not have  a COM3 or COM4, or if the mouse  is using the
  406.           only  comm port above COM2 then the following command line should
  407.           be used.
  408.  
  409.           DEVICE=SIO.SYS
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.                                                                           6
  418.  
  419.                                      DOS SETTINGS
  420.  
  421.           VSIO  gets  its operational  characteristics  from  DOS Settings.
  422.           Several basic DOS Settings  are provided.  They specify  the type
  423.           of  access  (if  any)  that  a  DOS  program  is  to  have  to  a
  424.           communication port that SIO controls.
  425.  
  426.           All of the  DOS Settings default  to what  most users should  use
  427.           most of  the time (which is  ON).  Also, all of  the DOS Settings
  428.           are prefixed with SIO_.
  429.  
  430.           The provided DOS Settings and their meaning follow:
  431.  
  432.                "SIO_Allow_Access_COMn" (where  n is  1 thru  4).  This  DOS
  433.                setting defaults  to ON.  If this  setting is turned OFF for
  434.                any or all of the ports, the DOS program will not be allowed
  435.                any access to that port(s).
  436.  
  437.                "SIO_Virtualize_COM_Ports"  This Dos setting defaults  to ON
  438.                and it applies to  all communications ports used by  the DOS
  439.                session.  When ON, this DOS  setting means VSIO is to act as
  440.                an interface between the SIO and the DOS program.  When OFF,
  441.                the DOS program is given direct access to the hardware ports
  442.                of the UART(s).
  443.  
  444.                "SIO_Virtualize_16550A"  This DOS setting defaults to ON and
  445.                it  applies to  all  communications ports  used  by the  DOS
  446.                session.  When ON, VSIO will  simulate a 16550A.  When  OFF,
  447.                VSIO will simulate a 16450.   Some DOS programs may not work
  448.                when  a 16550A is simulated.   Turning this  setting off may
  449.                allow the program to work (but slower).
  450.  
  451.                "SIO_Virtual_RTS_is_HS"  This DOS setting defaults to ON and
  452.                it applies  to  all communications  ports  used by  the  DOS
  453.                session.  When ON,  VSIO treats RTS as a  handshaking signal
  454.                from the DOS session.  When OFF, VSIO passed the RTS setting
  455.                directly to  the hardware.  This setting  MUST be on for all
  456.                high speed DOS communications.   The only application, known
  457.                to  the author, where this signal may (should) be turned off
  458.                is DOS programs that use true half duplex.
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                                                           7
  467.  
  468.                       Differences between SIO/VSIO and COM/VCOM
  469.  
  470.           What  follows is  some  of the  differences between  SIO/VSIO and
  471.           COM/VCOM that are know to the author.
  472.  
  473.           1 -  COM.SYS will  automatically seek  out and  support four
  474.                comm   ports,  COM1   through   COM4.     SIO.SYS  will
  475.                automatically seek out and  support only COM1 and COM2.
  476.                If SIO.SYS is to support more than two comm ports, they
  477.                must be defined in the command line that loads SIO.SYS.
  478.                For  example, DEVICE=SIO.SYS  (COM3) (COM4)  will cause
  479.                SIO.SYS to support four comm ports.
  480.  
  481.           2 -  In  the  absence  of  overrides in  the  command  line,
  482.                COM.SYS will seek  out four comm ports  in the sequence
  483.                of I/O ports 3F8h, 2F8h, 3E8h and 2E8h.  The first port
  484.                found in this sequence is given the logical name  COM1,
  485.                the second is COM2 etc.   This means that the comm port
  486.                at  2F8h  could become  COM1.   In  the opinion  of the
  487.                author, this confuses some uses to frustration.
  488.  
  489.                With no  command line  overrides, SIO.SYS uses  a fixed
  490.                I/O port concept.   That is, COM1 is always at I/O port
  491.                3F8h,  COM2 is  always at  2F8h, etc.   Another  way of
  492.                looking  at this is;   if no  comm port  exists at port
  493.                3F8h, then you  do not have  a COM1.  SIO.SYS  will not
  494.                move another  (found) comm  port into the  logical COM1
  495.                slot.
  496.  
  497.           3 -  VSIO  opens a  comm  port for  a  DOS session  with  sharing
  498.                allowed.    VCOM  uses  an  "exclusive  use"  open  for  DOS
  499.                sessions.
  500.  
  501.           4 -  SIO.SYS  always  controls  the  FIFOs  of  the  16550  UART.
  502.                SIO.SYS will  not allow an application program  (OS2 or DOS)
  503.                to disable the FIFOs of a real 16550.
  504.  
  505.           5 -  SIO.SYS  will accept any number  between 50 and  115200 as a
  506.                valid baud  rate.  For  example, if  an application  program
  507.                attempts to set a baud rate of 9990 bps, COM.SYS will reject
  508.                it and SIO.SYS will accept it.
  509.  
  510.           6 -  The last decimal digit of  a baud rate given to SIO  must be
  511.                zero.  SIO.SYS will not support baud rates like 75 or 134.5.
  512.                If given, they will be rounded to 80 and 130 respectively.
  513.  
  514.           7 -  SIO/VSIO execute faster than COM/VCOM.  This means that some
  515.                applications, that are timing  dependant, may not work under
  516.                SIO/VSIO that do work under COM/VCOM.
  517.  
  518.           8 -  VSIO optionally (and by default)  simulates a 16550A for DOS
  519.                sessions.  VCOM simulates a 8250/16450.
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.                                                                           8
  528.  
  529.  
  530.                                 PROBLEMS AND SOLUTIONS
  531.  
  532.           1 -  Port already in use is displayed.
  533.  
  534.                This message is displayed when the  comm port or the IRQ  is
  535.                in use.  If the comm port is not actually in use, the IRQ is
  536.                most likely in use.
  537.  
  538.           2 -  SIO  displays  a warning  message that  the  IRQ for  a port
  539.                appears to be wrong, but the port works.
  540.  
  541.                SIO probably detected more than one IRQ attached to the comm
  542.                port.  This  indicates a possible hardware problem with your
  543.                system that you may want to have checked.
  544.  
  545.           3 - The modem will not initialize.
  546.  
  547.                Configure  your comm  program(s) to  insert a  delay between
  548.                modem  initialization characters  as  they are  sent to  the
  549.                modem.
  550.  
  551.           4 - WinFax locks up during install.
  552.  
  553.                During  the  WinFax install,  temporally  turn  OFF the  DOS
  554.                setting  SIO_Virtualize_COM_Ports.    Once  installation  is
  555.                complete,   the   setting  SIO_Virualize_COM_Ports   can  be
  556.                restored.
  557.  
  558.           5 - WinFax does not work well.
  559.  
  560.                The  modem init strings set by WinFax (for some modems) will
  561.                work in  the single-layered comm  world of DOS  and Windows.
  562.                However, these  modem  init strings  will  not work  in  the
  563.                multi-layered comm environment used by OS/2.   Specifically,
  564.                in some cases, WinFax sets Xon/Xoff flow control (only) with
  565.                the modem.  Ideally,  both Xon/Xoff and Hardware handshaking
  566.                needs to be set.   If only one handshake can be set, set the
  567.                modem to Hardware handshake.  For USR FAX modems, use &H3.
  568.  
  569.           6 - Telemate does not recognize VX00 as a FOSSIL.
  570.  
  571.                Set the baud rate in Telemate to less than 57600.
  572.  
  573.           7 - Output is very slow at 2400 baud and below.
  574.  
  575.                This is a  bug in  several BBS programs  that originated  in
  576.                QuickBBS.   The problem has  been corrected  in QuickBBS  by
  577.                Steve Gabrilowitz,  QuickBBS's current author.   Inform  the
  578.                author  of your comm program  of the problem  and to contact
  579.                Steve Gabrilowitz for additional information.
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.                                                                           9
  588.  
  589.  
  590.           8 -  FaxWorks' driver FMD.SYS cannot access a  comm port when SIO
  591.                is used, but works okay with COM.SYS.
  592.  
  593.                The problem may be that the comm port  is in use (often by a
  594.                DOS program).   In all cases known  to the author,  this has
  595.                been the  case.  That  is, FMD.SYS  can not access  the port
  596.                because  it is  in  use, and  FMD.SYS  does not  report  the
  597.                problem in a manner that is understandable to many users.
  598.  
  599.                COM.SYS seems  to have a bug  that will allow  an OS2 device
  600.                driver (like FMD.SYS)  to use a comm port when  it is in use
  601.                by  a another device driver, and it (COM.SYS) does not cause
  602.                an  error when it  should.  The exact  conditions of this is
  603.                not fully understood by the author and the above supposition
  604.                may not be totally correct.
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.                                                                          10
  613.  
  614.                                   IRQ SHARING ON ISA
  615.  
  616.           Sharing the  same IRQ for  multiple communications  ports on  ISA
  617.           systems is not  for the weak  of heart  (or mind).   If you  have
  618.           problems  with shared IRQs, DO  NOT contact the  author.  Contact
  619.           the board or computer manufacturer for help.
  620.  
  621.           Some general rules are as follows:
  622.  
  623.           1 - Two different  boards (plugged into different slots)  can not
  624.           share the same IRQ.  This is a hardware limitation of ISA systems
  625.           and can  not be corrected by  software.  This means  that you can
  626.           not plug  in two internal modems,  set them for the  same IRQ and
  627.           expect them to work.   This does not apply to PS/2  systems.  The
  628.           problem  of multiple boards sharing the same IRQ was corrected in
  629.           the PS/2's buss design.
  630.  
  631.           2 - SIO can not (will not) share an IRQ with other device drivers
  632.           at  the same time.   SIO releases  IRQs that it  is currently not
  633.           using.    This  is  different  form  how  COM.SYS  works.    This
  634.           difference may show  up as  an unexpected "port  already in  use"
  635.           error that  does not occur with COM.SYS.  I have received reports
  636.           that the SDLC  drivers try  to concurrently share  IRQs with  the
  637.           ASYNC driver.  SIO.SYS will not allow this while COM.SYS will.
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.                                                                          11
  646.  
  647.                     Appendix A, Hardware Port and IRQ Assignments
  648.  
  649.           I have  obtained the following information  from various sources.
  650.           Accuracy is not guaranteed.  In fact, nothing in this document is
  651.           guaranteed.
  652.  
  653.           Addresses and IRQs for COM1 and COM2
  654.  
  655.                COM1 uses 03F8h and IRQ4
  656.                COM2 uses 02F8h and IRQ3
  657.  
  658.           Defacto standard for COM3 and COM4 for PC, XT and AT
  659.  
  660.                COM3 uses 03E8h and IRQ4
  661.                COM4 uses 02E8h and IRQ3
  662.  
  663.           Addresses and IRQ for COM3 through COM8 on the PS/2
  664.  
  665.                COM3 uses 3220h and IRQ3
  666.                COM4 uses 3228h and IRQ3
  667.                COM5 uses 4220h and IRQ3
  668.                COM6 uses 4228h and IRQ3
  669.                COM7 uses 5220h and IRQ3
  670.                COM8 uses 5228h and IRQ3
  671.  
  672.           All PCs (know to the author) prior to the  PS/2 only used 12 bits
  673.           to address  hardware I/0 ports.   Systems prior  to the PS/2  and
  674.           EISA can not address the standard PS/2 addresses for COM3 through
  675.           COM8.   If an AT or  below attempts to address  COM3 through COM8
  676.           using the standard addresses, only the low 12 bits of the address
  677.           are used.   That is,  the high digit  of the  hexadecimal address
  678.           will be ignored.   This means that any  reference to COM3 through
  679.           COM8 will actually address ports 220h through 22Fh.
  680.  
  681.           You  should avoid  expansion boards that  use ports  220h through
  682.           22Fh unless the expansion board is a serial I/O board. 
  683.  
  684.           SIO  will  (attempt  to)  determine   the  hardware  architecture
  685.           (ISA/EISA  and PS/2)  that it  is being  executed on and  use the
  686.           appropriate  hardware  port  addresses  for  COM1  thru  COM4  as
  687.           defaults.
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.                                                                          12
  696.  
  697.                                 Appendix B, SIO Chips
  698.  
  699.  
  700.           The following is a collection of comments developed from hearsay,
  701.           random documents, experience,  and technical specifications.  So,
  702.           take it with a grain of salt.  Order information from the various
  703.           manufactures if you want accurate information.
  704.  
  705.           Very   good   reference  books   are   available  from   National
  706.           Semiconductor Corporation.   They cover  most of the  SIO devices
  707.           (also called UARTs) that you will find in many PCs and clones.  I
  708.           am  not sure  that books  can be  ordered directly  from National
  709.           semiconductor.  They  may   require  that  you  get  it   from  a
  710.           distributor.  In  any case, the  address on the  back of the  one
  711.           manual is:
  712.  
  713.                National Semiconductor Corporation
  714.                2900 Semiconductor Drive
  715.                P.O. Box 58090
  716.                Santa Clara, CA 95052-8090
  717.  
  718.                Tel:(408)721-5000
  719.                TWX:(910)339-9240
  720.  
  721.           8250
  722.  
  723.           As best that I know, the  8250 was the first SIO chip (integrated
  724.           circuit) that  was used  by the IBM  PC and many  clones.   In my
  725.           opinion, it was  a poor choice on  the part of IBM.   I feel many
  726.           superior devices, at  comparable prices, were  readily available.
  727.           At that time, I feel the 8251A or the 8530 would have been better
  728.           choices.  But, they used the 8250 and therefore we must use it.
  729.  
  730.           From  a hardware standpoint the 8250 is a relatively slow device.
  731.           It is advisable that programmers not perform successive inputs or
  732.           outputs to this device.  It seems that software programs can load
  733.           the various registers of the 8250 faster than it can  process the
  734.           information.   The  8250  had  a  total  of  7  registers.    The
  735.           specifications state that 56kb is the maximum baud rate.
  736.  
  737.           8250A
  738.  
  739.           I believe the 8250A  is the 8250 with some bug fixes.   I have no
  740.           idea  what  the bugs  may  have  been.   A  quick  glance at  the
  741.           specifications  shows the speed of the 8250  and 8250A to be much
  742.           the same.   The  8250A added  an 8th  register.   This additional
  743.           register enables software to detect if an 8250 is installed.  The
  744.           specifications state that 56kb is the maximum baud rate.
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.                                                                          13
  753.  
  754.           16450
  755.  
  756.           The  16450 seems to be a speeded up  version of the 8250A.  There
  757.           is no  direct way (that  I know  of) for software  to detect  the
  758.           difference between an 8250A and a 16450.  I believe the 16450 was
  759.           developed to  eliminate the  need for  software to  insert delays
  760.           between successive  accesses to  the device.   The specifications
  761.           indicate the 16450 is a much faster device than its predecessors.
  762.           The additional speed is only the speed at which the processor can
  763.           access the  device.  The maximum baud rate for the 16450 is still
  764.           stated at  56kb.  However, I  have been told by  some people that
  765.           they have run the  16450 successfully at much higher speeds. I do
  766.           not believe there was ever a 16450A.
  767.  
  768.           16C451
  769.  
  770.           The  16C451 is a CMOS version  of the 16450.  CMOS  is a term for
  771.           the  material and  manufacturing process  used to make  the part.
  772.           CMOS typically uses less  power than other technologies.   If you
  773.           are  not  designing hardware,  you should  view  the 16C451  as a
  774.           16450.
  775.  
  776.           16550 (Non A)
  777.  
  778.           It is  hard to  find a 16550  (Non A).   I  was told by  National
  779.           Semiconductor that  they did  everything  they could  to get  all
  780.           16550s  back.  SIO will  detect a 16550 and tell  you if you have
  781.           one.    I am  told that  the 16550  was  installed in  early PS/2
  782.           systems.
  783.  
  784.           The 16550  was the first  shot at  a FIFOed version  of the  8250
  785.           family  from  National semiconductor.    However, I  was  told by
  786.           National  Semiconductor  that the  FIFOs  of  the 16550  are  not
  787.           reliable and  they should not be enabled.  SIO will treat a 16550
  788.           like  a 16450.    In  this mode,  they  are  reliable.   National
  789.           Semiconductor would not provide  me with a specification for  the
  790.           16550.  However, I suspect  its maximum baud rate is the  same as
  791.           the 16550A which is 256kb.
  792.  
  793.           16550A, 16550AF and 16550AFN
  794.  
  795.           In  the manuals  that  I have,  National  Semiconductor does  not
  796.           explain  the differences between the  16550A and the  16550AF.  I
  797.           suspect the AF part may have a few bug fixes.  I believe the N in
  798.           AFN  describes  packaging,  ceramic  versus plastic,  DIP  versus
  799.           surface mount etc.
  800.  
  801.           In  the opinion  of the author,  there is  no substitute  for the
  802.           16550A  (and its successors) in the 8250 type series.  The 16550A
  803.           is compatible with most software written for the entire family of
  804.           8250  type devices.  Programs  that are 16550A  aware can provide
  805.           much improved performance over previous devices.
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.                                                                          14
  814.  
  815.  
  816.           The  maximum  baud rate  for the  16550A  is specified  at 256kb.
  817.           However, due to the hardware design of the PC et al, 115kb is the
  818.           maximum baud rate that can be programmed by software.
  819.  
  820.           The 16550A can be plugged into  the same socket that contains  an
  821.           8250, 8250A  or 16450.  If  your SIO expansion board  has the SIO
  822.           chips  in  sockets,  you can  upgrade  to  the  16550A by  simply
  823.           removing the old chips and replacing them with 16550As.
  824.  
  825.           The key to the performance  increase of the 16550A is  its FIFOs.
  826.           It has 16 byte FIFOs for both transmit and receive data.
  827.  
  828.           16550s Made by Western Digital
  829.  
  830.           I have been told, but I have not verified for myself, that 16550s
  831.           made  by Western  Digital have  a problem  with their  FIFOs when
  832.           working at 2400 baud or below.
  833.  
  834.           16C551
  835.  
  836.           The  16C551 is  a CMOS  version of  the 16550AF.   See  the above
  837.           description of the 16C451 for a discussion of CMOS.   Do not feel
  838.           you need to upgrade from a 16550A or AF to a 16C551.  There is no
  839.           gain from an existing users point of view.
  840.  
  841.           16C552
  842.  
  843.           The 16C552 is two 16C551s on a single chip.
  844.  
  845.           16C554
  846.  
  847.           The 16C554 is four 16C551s on a single chip.
  848.  
  849.           82510
  850.  
  851.           I  believe Intel is the only company that manufactures the 82510.
  852.           The 82510 is feature  rich with several modes of  operation.  Its
  853.           default  mode is to operate  as a 16450.  The  82510 has a 4 byte
  854.           FIFO  for  both transmit  and receive  data.   A  4 byte  FIFO is
  855.           sufficient to provide significant performance over a basic 16450.
  856.  
  857.           The 82510 is small in size.   Therefore, it is found in many  lap
  858.           tops.
  859.  
  860.           The 82510  is somewhat of a sleeper.   I believe it would be much
  861.           more widely used if Intel had promoted it more.  However, given a
  862.           choice  between  the 82510  and the  16550A,  I would  select the
  863.           16550A.
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.                                                                          15
  872.  
  873.                        Appendix C, Multi-Port Serial I/0 Cards
  874.  
  875.           I have  received many  requests for information  about multi-port
  876.           serial I/O  card.  I will  describe the boards that  I know about
  877.           (or have heard about) here.  I will add  to the list as I receive
  878.           precise information from users or develop it myself.
  879.  
  880.           My personal experience  and testing of SIO  is with a board  from
  881.           B&B computer.   However,  I had  to modify the  board to  make it
  882.           share IRQs.  Therefore I will not discuss this board.
  883.  
  884.           STB 4COM  (ISA buss)
  885.  
  886.           I am very impressed with the STB 4COM card, they  have almost got
  887.           it.   Yes, its the  same company that makes  the VGA cards.   The
  888.           4COM  card uses a 16554  which is the  equivalent of four 16550A.
  889.           Comm ports can use IRQs 2/9, 3, 4, 5, 10, 11, 12, and 15.  Any or
  890.           all  ports can  share IRQs,  and they  have done  this right.   I
  891.           tested SIO  with all four  ports of  the 4COM on  IRQ12 and  they
  892.           worked  correctly.  The user can  select any of the following I/O
  893.           port address for a comm port:  3F8, 2F8, 3E8, 2E8, 1A8, 1E8, 1F8,
  894.           2A8.
  895.  
  896.           I purchased my 4COM  card (for $119) from Steve  Winter, 800-735-
  897.           5266 or 919-286-1502.
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.                                                                          16
  906.  
  907.                                         INDEX
  908.  
  909.           16450 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  910.           16550 Non A . . . . . . . . . . . . . . . . . . . . . . . . .  13
  911.           16550A  . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  912.           16550AF . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  913.           16550AFN  . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  914.           16550s Made by Western Digital  . . . . . . . . . . . . . . .  14
  915.           16C451  . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  916.           16C551  . . . . . . . . . . . . . . . . . . . . . . . . . . .  14
  917.           16C552  . . . . . . . . . . . . . . . . . . . . . . . . . . .  14
  918.           16C554  . . . . . . . . . . . . . . . . . . . . . . . . . . .  14
  919.           8250  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12
  920.           8250A . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12
  921.           82510 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  14
  922.           Addresses and IRQ for COM3 through COM8 on the PS/2 . . . . .  11
  923.           Addresses and IRQs for COM1 and COM2  . . . . . . . . . . . .  11
  924.           Allow_Access_COMn . . . . . . . . . . . . . . . . . . . . . . . 6
  925.           Appendix A, Hardware Notes  . . . . . . . . . . . . . . . . .  11
  926.           Appendix B, SIO Chips . . . . . . . . . . . . . . . . . . . .  12
  927.           Appendix C, Multi-Port Serial I/0 Cards . . . . . . . . . . .  15
  928.           AUTOMATIC IRQ ASSIGNMENT  . . . . . . . . . . . . . . . . . . . 5
  929.           COMn already in use . . . . . . . . . . . . . . . . . . . . . . 8
  930.           CONFIG.SYS  . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  931.           Defacto standard for COM3 and COM4  . . . . . . . . . . . . .  11
  932.           Differences between SIO/VSIO and COM/VCOM . . . . . . . . . . . 7
  933.           DOS SETTINGS  . . . . . . . . . . . . . . . . . . . . . . . . . 6
  934.           FaxWorks  . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  935.           FIFO  . . . . . . . . . . . . . . . . . . . . . . . . . .  13, 14
  936.           FMD.SYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  937.           GETTING STARTED . . . . . . . . . . . . . . . . . . . . . . . . 3
  938.           Installing SIO/VSIO . . . . . . . . . . . . . . . . . . . . . . 3
  939.           IRQ . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4, 5
  940.           IRQ SHARING ON ISA  . . . . . . . . . . . . . . . . . . . . .  10
  941.           National Semiconductor Corporation  . . . . . . . . . . . . .  12
  942.           PDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  943.           Physical Device Driver  . . . . . . . . . . . . . . . . . . . . 2
  944.           PKUNZIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  945.                Authentic files  . . . . . . . . . . . . . . . . . . . . . 3
  946.           PROBLEMS AND SOLUTIONS  . . . . . . . . . . . . . . . . . . . . 8
  947.           Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  948.           RTS/CTS handshaking . . . . . . . . . . . . . . . . . . . . . . 2
  949.           SIO Chips . . . . . . . . . . . . . . . . . . . . . . . . . .  12
  950.           SIO_Virtual_RTS_is_HS . . . . . . . . . . . . . . . . . . . . . 6
  951.           STB 4COM  . . . . . . . . . . . . . . . . . . . . . . . . . .  15
  952.           UART  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12
  953.           VDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  954.           Virtual Device Driver . . . . . . . . . . . . . . . . . . . . . 2
  955.           Virtualize_16550A_For_COM . . . . . . . . . . . . . . . . . . . 6
  956.           Virtualize_COM_Ports  . . . . . . . . . . . . . . . . . . . . . 6
  957.           WHAT IS SIO . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  958.           WHAT IS VSIO  . . . . . . . . . . . . . . . . . . . . . . . . . 2
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.                                                                          17
  967.  
  968.           WinFax  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  969.